#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <string.h>

#define INVALID_HANDLE_VALUE (-1)
#define FILE_ACCESS_FLAGS(RW) ((RW == 0) ? O_RDONLY : O_RDWR | O_CREAT)

int CreateFileCompat(const char *winPath, int desiredAccess, int shareMode)
{
    char linuxPath[strlen(winPath) + 1];
    strcpy(linuxPath, winPath);
    for (char *p = linuxPath; *p; ++p)
        if (*p == '\\')
            *p = '/'; // 路径转换

    int flags = FILE_ACCESS_FLAGS(desiredAccess); // 简化的访问权限映射
    int fd = open(linuxPath, flags, 0644);        // 使用Linux的open函数

    if (fd == -1)
    {
        // 可以在这里添加错误处理，转换Linux错误码为Windows风格的错误处理
        perror("Error opening file");
        return INVALID_HANDLE_VALUE;
    }
    return fd; // 返回文件描述符作为“句柄”
}